home *** CD-ROM | disk | FTP | other *** search
/ Aminet 30 / Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso / Aminet / dev / cross / GBDK-2.0.lha / GBDK / lib / pad.s < prev    next >
Text File  |  1998-10-01  |  1KB  |  80 lines

  1.     .include    "global.s"
  2.  
  3.     .area    _CODE
  4.  
  5.     ;; Wait until all buttons have been released
  6. .padup::
  7. _waitpadup::
  8.     PUSH    AF        ; Save modified registers
  9.     PUSH    BC
  10. 1$:
  11.     LD    B,#0xFF
  12. 2$:
  13.     CALL    .jpad
  14.     OR    A        ; Have all buttons been released?
  15.     JR    NZ,1$        ; Not yet
  16.  
  17.     DEC    B
  18.     JR    NZ,2$
  19.     POP    BC        ; Restore registers
  20.     POP    AF
  21.     RET
  22.  
  23.     ;; Get Keypad Button Status
  24.     ;; The following bits are set if pressed:
  25.     ;;   0x80 - Start   0x08 - Down
  26.     ;;   0x40 - Select  0x04 - Up
  27.     ;;   0x20 - B        0x02 - Left
  28.     ;;   0x10 - A        0x01 - Right
  29. .jpad::
  30.     PUSH    BC        ; Save modified registers
  31.     LD    A,#0x20
  32.     LDH    (.P1),A        ; Turn on P15
  33.  
  34.     LDH    A,(.P1)        ; Delay
  35.     LDH    A,(.P1)
  36.     CPL
  37.     AND    #0x0F
  38.     SWAP    A
  39.     LD    B,A
  40.     LD    A,#0x10
  41.     LDH    (.P1),A        ; Turn on P14
  42.     LDH    A,(.P1)        ; Delay
  43.     LDH    A,(.P1)
  44.     LDH    A,(.P1)
  45.     LDH    A,(.P1)
  46.     LDH    A,(.P1)
  47.     LDH    A,(.P1)
  48.     CPL
  49.     AND    #0x0F
  50.     OR    B
  51.     SWAP    A
  52.     LD    B,A
  53.     LD    A,#0x30
  54.     LDH    (.P1),A        ; Turn off P14 and P15 (reset joypad)
  55.     LD    A,B
  56.     POP    BC        ; Restore registers
  57.     RET
  58.  
  59.     ;; Wait for the key in B to be pressed
  60. .wait_pad::
  61. 1$:
  62.     CALL    .jpad        ; Read pad
  63.     AND    B        ; Compare with mask?
  64.     JR    Z,1$        ; Loop if no intersection
  65.     RET
  66.  
  67. _joypad::
  68.     CALL    .jpad
  69.     LD    E,A        ; Return result in DE
  70.     RET
  71.  
  72. _waitpad::
  73.     PUSH    BC
  74.     LDA    HL,4(SP)    ; Skip return address and registers
  75.     LD    B,(HL)
  76.     CALL    .wait_pad
  77.     LD    E,A        ; Return result in DE
  78.     POP    BC
  79.     RET
  80.